package dataType;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.media.opengl.GL;

import figuras.PuntoVector;

public class ContornoHoja {
	
	//Array[0] = contorno de la izquierda
	//Array[1] = contorno de la vena
	//Array[2] = contorno de la derecha
	ArrayList<ArrayList<PuntoVector>> hoja;
	
	public ContornoHoja(){
		hoja = new ArrayList<ArrayList<PuntoVector>>();
	}

	public ArrayList<ArrayList<PuntoVector>> getContornoHoja() {
		return hoja;
	}

	public void setContornoHoja(ArrayList<ArrayList<PuntoVector>> hoja) {
		this.hoja = hoja;
	}	
	
	public ArrayList<PuntoVector> getLinea(int x){
		return this.hoja.get(x);
	}
	
	public void setLinea(int x, ArrayList<PuntoVector> l){	
		this.hoja.set(x, l);		
	}
	
	public void insertaLinea(ArrayList<PuntoVector> l){
		this.hoja.add(l);
	}
	
	
	/**
	 * Dibuja una linea para cada uno de los  ArrayList
	 */
	public void dibuja(GL gl){	
		for(int i=0; i < hoja.size(); i++){		
			ArrayList<PuntoVector> linea = hoja.get(i);
			gl.glBegin(gl.GL_LINE_STRIP);
				for(int j=0; j < linea.size(); j++)
					gl.glVertex3d(linea.get(j).getX(), linea.get(j).getY(), linea.get(j).getZ());
			gl.glEnd();	
		}
	}

	public void save(PrintWriter out) {
		out.println(hoja.get(0).size());
		for(int i = 0; i < hoja.get(0).size();i++){
			hoja.get(0).get(i).save(out);
		}
		out.println(hoja.get(1).size());
		for(int i = 0; i < hoja.get(1).size();i++){
			hoja.get(1).get(i).save(out);
		}
		out.println(hoja.get(2).size());
		for(int i = 0; i < hoja.get(2).size();i++){
			hoja.get(2).get(i).save(out);
		}
	}

	public void load(BufferedReader in) {
		try {
			ArrayList<PuntoVector> v = new ArrayList<PuntoVector>();
			int nPoints = new Integer(in.readLine());
			for(int i = 0; i < nPoints;i++){
				PuntoVector p = new PuntoVector();
				p.load(in);
				v.add(p);
			}
			hoja.add(v);
			v = new ArrayList<PuntoVector>();
			nPoints = new Integer(in.readLine());
			for(int i = 0; i < nPoints;i++){
				PuntoVector p = new PuntoVector();
				p.load(in);
				v.add(p);
			}
			hoja.add(v);
			v = new ArrayList<PuntoVector>();
			nPoints = new Integer(in.readLine());
			for(int i = 0; i < nPoints;i++){
				PuntoVector p = new PuntoVector();
				p.load(in);
				v.add(p);
			}
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
